package com.seeyon.apps.restext;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import com.seeyon.client.CTPRestClient;

public class BpmSenda0001  {

public static String getXml(){
 InputStream is = Object.class.getResourceAsStream("/com/seeyon/apps/restext/a0001XmlVersion2.xml");
 try {
  ByteArrayOutputStream boa = new ByteArrayOutputStream();
  int len = 0;
  byte[] buffer = new byte[1024];
  
  while ((len = is.read(buffer)) != -1) {
   boa.write(buffer, 0, len);
  }
  is.close();
  boa.close();
  byte[] result = boa.toByteArray();
  return new String(result, "utf-8");
 } catch (Exception e) {
  e.printStackTrace();
  return null;
 }
}

/*
 * 流水号场景：现在发起流程接口只支持【计算流水号】
 *       1.新建流水号：创建流水号：表单应用-流水号管理
 *       2.模板设置流水号：表单应用-流程表单设置-流程表单制作-选择控件-计算公式设置-系统数据域中选择流水号
 */

/*
 * 表单附件控件场景：
 *       1.获取附件ID：通过上传接口获得【注意：如果2个表单附件控件都是同一个附件，也需要上传2次，获取不同的ID，而不能2个表单附件控件共用一个附件ID】
 *       2.发起接口XML数据中设置附件ID
 *       3.需要formContentAtt重设置附件ID
 */

/*
 *各种控件输入示例：
 *      选人控件：应该设置人员ID属性,如<column name="选人控件"><value><![CDATA[5225821413792960362]]></value></column>
 *      选择多人：应该设置人员ID属性,如<column name="选择多人"><value><![CDATA[5225821413792960362,62169518027195552]]></value></column>
 *      选择单位：应该设置单位ID属性,如<column name="选择单位"><value><![CDATA[-9003502040682770827]]></value></column>
 *      选择部门：应该设置部门ID属性,如<column name="选择部门"><value><![CDATA[8752025898860431223]]></value></column>
 *      下拉框枚举： 应该设置枚举ID属性(ctp_enum_item表ID),如<column name="枚举"><value><![CDATA[-6414913335454317202]]></value></column>
*/

public static String getJson(){
String xmlToJson="{\"文本1\":\"\",}";
return xmlToJson;
}

public static void BpmSenda0001(){
String templateCode="a0001";/**模板编号**/
String senderLoginName="zjl";/**登录名**/
String subject="BPMcs1"; /**标题**/

//String xmlStr = getXml();

String jsonStr = getJson();

List<Long> formcontentatt=new ArrayList();//V6.1支持正文组件ID

/**注意:生成的模板XML文件Version1表示"1.0" 格式,Version2表示"2.0" 格式**/
/**DEMO示例用的是version="2.0"**/
/**V6.0产品发起时，两种格式均支持**/

Map<String,Object> map=new HashMap<String, Object>();
map.put("senderLoginName", senderLoginName);
map.put("subject", subject);
map.put("data",jsonStr.trim());
map.put("templateCode", templateCode);
map.put("attachments", null);/**附件ID**/
map.put("param", "0");/**0:发起;1:待发**/
map.put("transfertype","json");/**V6.1新增参数，json:表示data为json格式；xml:data为XML格式**/
map.put("formContentAtt",formcontentatt);/**V6.1支持表单正文组件ID**/

CTPRestClient client = ClientResource.getInstance().resouresClent();
Long flowId=client.post("flow/"+templateCode, map,Long.class);
System.out.println(flowId);
}

//public static void main(String args[]){
//   BpmSenda0001();
//}
//取得指定表单流程当前待办人员信息(Since:V61)
public static void testGetFlowDostaff() {
 CTPRestClient client = ClientResource.getInstance().resouresClent();
 String result = client.get("flow/dostaff/6808996445033352763", String.class);
 System.out.println(result);
}

public static void main(String args[]){
	System.out.println("be");
 testGetFlowDostaff();  
}

}